{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Standardization\n",
    "\n",
    "Here are some examples of how to standardize molecules.\n",
    "\n",
    "First set our iPython notebook to display molecule images and log messages:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/matt/.virtualenvs/molvs/lib/python2.7/site-packages/IPython/html.py:14: ShimWarning: The `IPython.html` package has been deprecated. You should import from `notebook` instead. `IPython.html.widgets` has moved to `ipywidgets`.\n",
      "  \"`IPython.html.widgets` has moved to `ipywidgets`.\", ShimWarning)\n"
     ]
    }
   ],
   "source": [
    "from rdkit.Chem.Draw import IPythonConsole\n",
    "import logging\n",
    "logger = logging.getLogger('molvs')\n",
    "logger.setLevel(logging.INFO)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Standardizing a SMILES string\n",
    "\n",
    "The `standardize_smiles` function provides a quick and easy way to get the standardized version of a given SMILES string:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:molvs.normalize:Rule applied: Recombine 1,3-separated charges\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'CN=c1ccccn1C'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from molvs import standardize_smiles\n",
    "standardize_smiles('C[n+]1c([N-](C))cccc1')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "While this is convenient for one-off cases, it's inefficient when dealing with multiple molecules and doesn't allow any customization of the standardization process.\n",
    "\n",
    "## The Standardizer class\n",
    "\n",
    "The `Standardizer` class provides flexibility to specify custom standardization stages and efficiently standardize multiple molecules."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from rdkit import Chem\n",
    "import molvs\n",
    "from molvs import Standardizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAYAAABNcIgQAAAhhElEQVR4nO3de1iUZf4/8DdHFeSo\niCiKoImaCjSiwQwnz6Jg2XrAtVpzPZXK/tQyrXbr127l5m5Slmtpu6ZlHlJGDh4wDzEDCiIqeRY0\nDyAoCEich+f7x8SkMgPIYZ6Beb+uyz+Y+4H5zHVRb577+dz3bSIIggAiIiIjZSp2AURERGJiEBIR\nkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFj\nEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIR\nkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVFjEBIRkVEzF7sAIqrfgwcPcPz4\ncSQlJcHLywthYWEwMzMTuyyidsNEEARB7CKI6HfXrl1DUlISkpKSoFQq8fPPP8PKygq+vr64cOEC\nQkND8dVXX8HExETsUonaBd4REomouroaly5dglKphEKhQGJiIq5fvw4XFxdIJBJERERAKpVi+PDh\nsLS0xLlz5xAUFARra2tERUWJXT5Ru8A7QiI9Ki4uRkpKChQKBZRKJZRKJaqqqtC/f3/IZDJIpVIE\nBgaiT58+On9GSkoKRo8ejVWrVuHNN9/UX/FE7RSDkKgVZWVlQaFQIC0tDUqlEqdOnYKNjQ2GDx8O\nqVQKmUwGf39/WFlZPdHPPXz4MCZOnIioqCjMmzevlaonMg4MQqIWUlpailOnTmlC78iRI7h37x48\nPDwglUohkUggk8ng4+MDU9PmN2zL5XJMmzYN33zzDaZPn94Cn4DIODEIiZooJycHJ0+e1DzfO3ny\nJGpqajB06FDN3V5wcDCcnJxarYZvvvkG8+bNw549ezBhwoRWex+i9oxBSNQIKpUKFy9e1IReWloa\nzp8/r2lqqX2+5+vriw4dOui1tk8//RQrV67EgQMHIJPJ9PreRO0Bg5BIi6qqKhw6dAjJyclQKpVI\nSUlBWVmZ5m7Pz88PUqkUbm5urV7L0aNH4e3tDXt7e53XrFy5EuvXr9dcS0SNxyAk0uKjjz7CRx99\nhMGDB2vu9mQyGRwcHPRahyAICAoKQk1NDQ4ePKizqUYQBCxcuBB79uxBYmIi+vfvr9c6idoyBiHR\n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\n",
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x10c7bfc90>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mol = Chem.MolFromSmiles('[Na]OC(=O)c1ccc(C[S+2]([O-])([O-]))cc1')\n",
    "mol"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:molvs.metal:Removed covalent bond between Na and O\n",
      "INFO:molvs.normalize:Rule applied: Sulfone to S(=O)(=O)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x10c7bfc20>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s = Standardizer()\n",
    "smol = s.standardize(mol)\n",
    "smol"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'O=C([O-])c1ccc(C[S](=O)=O)cc1.[Na+]'"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Chem.MolToSmiles(smol)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `Standardizer` class takes a number of initialization parameters to customize its behaviour:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:molvs.metal:Removed covalent bond between Na and O\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nQmCC\n",
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x10d185ad0>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from molvs.normalize import Normalization\n",
    "norms = (\n",
    "    Normalization('Nitro to N+(O-)=O', '[*:1][N,P,As,Sb:2](=[O,S,Se,Te:3])=[O,S,Se,Te:4]>>[*:1][*+1:2]([*-1:3])=[*:4]'),\n",
    "    Normalization('Pyridine oxide to n+O-', '[n:1]=[O:2]>>[n+:1][O-:2]'),\n",
    ")\n",
    "\n",
    "my_s = Standardizer(normalizations=norms)\n",
    "smol = my_s.standardize(mol)\n",
    "smol"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice that the sulfone group wasn't normalized in this case, because when initializing the Standardizer we only specified two Normalizations.\n",
    "\n",
    "The default list of normalizations is `molvs.normalize.NORMALIZATIONS`.\n",
    "\n",
    "It is possible to resuse a Standardizer instance on many molecules once it has been initialized with some parameters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:molvs.charge:Moved proton from –SO3H to -CO2H\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nYII=\n",
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x10d185b40>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_s.standardize(Chem.MolFromSmiles('C1=C(C=C(C(=C1)O)C(=O)[O-])[S](O)(=O)=O.[Na+]'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:molvs.metal:Removed covalent bond between Ag and O\n",
      "INFO:molvs.metal:Removed covalent bond between Ag and O\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x10d185fa0>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_s.standardize(Chem.MolFromSmiles('[Ag]OC(=O)O[Ag]'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
